<?xml version="1.0"?>
<doc>
    <assembly>
        <name>Microsoft.Deployment.WindowsInstaller.Linq</name>
    </assembly>
    <members>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute">
            <summary>
            Apply to a subclass of QRecord to indicate the name of
            the table the record type is to be used with.
            </summary>
            <remarks>
            If this attribute is not used on a record type, the default
            table name will be derived from the record type name. (An
            optional underscore suffix is stripped.)
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.#ctor(System.String)">
            <summary>
            Creates a new DatabaseTableAttribute for the specified table.
            </summary>
            <param name="table">name of the table associated with the record type</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute.Table">
            <summary>
            Gets or sets the table associated with the record type.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute">
            <summary>
            Apply to a property on a subclass of QRecord to indicate
            the name of the column the property is to be associated with.
            </summary>
            <remarks>
            If this attribute is not used on a property, the default
            column name will be the same as the property name.
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.#ctor(System.String)">
            <summary>
            Creates a new DatabaseColumnAttribute which maps a
            record property to a column.
            </summary>
            <param name="column">name of the column associated with the property</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute.Column">
            <summary>
            Gets or sets the column associated with the record property.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord">
            <summary>
            Generic record entity for queryable databases,
            and base for strongly-typed entity subclasses.
            </summary>
            <remarks>
            Several predefined specialized subclasses are provided for common
            standard tables. Subclasses for additional standard tables
            or custom tables are not necessary, but they are easy to create
            and make the coding experience much nicer.
            <para>When creating subclasses, the following attributes may be
            useful: <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseTableAttribute"/>,
            <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.DatabaseColumnAttribute"/></para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.#ctor">
            <summary>
            Do not call. Use QTable.NewRecord() instead.
            </summary>
            <remarks>
            Subclasses must also provide a public parameterless constructor.
            <para>QRecord constructors are only public due to implementation
            reasons (to satisfy the new() constraint on the QTable generic
            class). They are not intended to be called by user code other than
            a subclass constructor. If the constructor is invoked directly,
            the record instance will not be properly initialized (associated
            with a database table) and calls to methods on the instance
            will throw a NullReferenceException.</para>
            </remarks>
            <seealso cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.I(System.Int32)">
            <summary>
            Used by subclasses to get a field as an integer.
            </summary>
            <param name="index">zero-based column index of the field</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.NI(System.Int32)">
            <summary>
            Used by subclasses to get a field as a nullable integer.
            </summary>
            <param name="index">zero-based column index of the field</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ToString">
            <summary>
            Dumps all record fields to a string.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.String},System.Collections.Generic.IList{System.String})">
            <summary>
            Update multiple fields in the record (and the database).
            </summary>
            <param name="fields">column names of fields to update</param>
            <param name="values">new values for each field being updated</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Update(System.Collections.Generic.IList{System.Int32},System.Collections.Generic.IList{System.String})">
            <summary>
            Update multiple fields in the record (and the database).
            </summary>
            <param name="indexes">column indexes of fields to update</param>
            <param name="values">new values for each field being updated</param>
            <remarks>
            The record (primary keys) must already exist in the table.
            <para>Updating primary key fields is not yet implemented; use Delete()
            and Insert() instead.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert">
            <summary>
            Inserts the record in the database.
            </summary>
            <remarks>
            The record (primary keys) may not already exist in the table.
            <para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new 
            record. Prmary keys and all required fields
            must be filled in before insertion.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Insert(System.Boolean)">
            <summary>
            Inserts the record into the table.
            </summary>
            <param name="temporary">true if the record is temporarily
            inserted, to be visible only as long as the database is open</param>
            <remarks>
            The record (primary keys) may not already exist in the table.
            <para>Use <see cref="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord"/> to get a new 
            record. Prmary keys and all required fields
            must be filled in before insertion.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Delete">
            <summary>
            Deletes the record from the table if it exists.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Refresh">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Assign">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Merge">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Validate">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateNew">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateFields">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.ValidateDelete">
            <summary>
            Not yet implemented.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.FieldCount">
            <summary>
            Gets the number of fields in the record.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.String)">
            <summary>
            Gets or sets a record field.
            </summary>
            <param name="field">column name of the field</param>
            <remarks>
            Setting a field value will automatically update the database.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QRecord.Item(System.Int32)">
            <summary>
            Gets or sets a record field.
            </summary>
            <param name="index">zero-based column index of the field</param>
            <remarks>
            Setting a field value will automatically update the database.
            </remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Queryable">
            <summary>
            Allows any Database instance to be converted into a queryable database.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.Queryable.AsQueryable(Microsoft.Deployment.WindowsInstaller.Database)">
            <summary>
            Converts any Database instance into a queryable database.
            </summary>
            <param name="db"></param>
            <returns>Queryable database instance that operates on the same
            MSI handle.</returns>
            <remarks>
            This extension method is meant for convenient on-the-fly conversion.
            If the existing database instance already happens to be a QDatabase,
            then it is returned unchanged. Otherwise since the new database
            carries the same MSI handle, only one of the instances needs to be
            closed, not both.
            </remarks>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase">
            <summary>
            Queryable MSI database - extends the base Database class with
            LINQ query functionality along with predefined entity types
            for common tables.
            </summary>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String)">
            <summary>
            Opens an existing database in read-only mode.
            </summary>
            <param name="filePath">Path to the database file.</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks>
            Because this constructor initiates database access, it cannot be used with a
            running installation.
            <para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
            The finalizer will close the handle if it is still open, however due to the nondeterministic
            nature of finalization it is best that the handle be closed manually as soon as it is no
            longer needed, as leaving lots of unused handles open can degrade performance.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,System.String)">
            <summary>
            Opens an existing database with another database as output.
            </summary>
            <param name="filePath">Path to the database to be read.</param>
            <param name="outputPath">Open mode for the database</param>
            <returns>Database object representing the created or opened database</returns>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks>
            When a database is opened as the output of another database, the summary information stream
            of the output database is actually a read-only mirror of the original database and thus cannot
            be changed. Additionally, it is not persisted with the database. To create or modify the
            summary information for the output database it must be closed and re-opened.
            <para>The returned Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
            The finalizer will close the handle if it is still open, however due to the nondeterministic
            nature of finalization it is best that the handle be closed manually as soon as it is no
            longer needed, as leaving lots of unused handles open can degrade performance.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
            <summary>
            Opens an existing database or creates a new one.
            </summary>
            <param name="filePath">Path to the database file. If an empty string
            is supplied, a temporary database is created that is not persisted.</param>
            <param name="mode">Open mode for the database</param>
            <exception cref="T:Microsoft.Deployment.WindowsInstaller.InstallerException">the database could not be created/opened</exception>
            <remarks>
            To make and save changes to a database first open the database in transaction,
            create or, or direct mode. After making the changes, always call the Commit method
            before closing the database handle. The Commit method flushes all buffers.
            <para>Always call the Commit method on a database that has been opened in direct
            mode before closing the database. Failure to do this may corrupt the database.</para>
            <para>Because this constructor initiates database access, it cannot be used with a
            running installation.</para>
            <para>The Database object should be <see cref="M:Microsoft.Deployment.WindowsInstaller.InstallerHandle.Close"/>d after use.
            The finalizer will close the handle if it is still open, however due to the nondeterministic
            nature of finalization it is best that the handle be closed manually as soon as it is no
            longer needed, as leaving lots of unused handles open can degrade performance.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.#ctor(System.IntPtr,System.Boolean,System.String,Microsoft.Deployment.WindowsInstaller.DatabaseOpenMode)">
            <summary>
            Creates a new database from an MSI handle.
            </summary>
            <param name="handle">Native MSI database handle.</param>
            <param name="ownsHandle">True if the handle should be closed
            when the database object is disposed</param>
            <param name="filePath">Path of the database file, if known</param>
            <param name="openMode">Mode the handle was originally opened in</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Log">
            <summary>
            Gets or sets a log where all MSI SQL queries are written.
            </summary>
            <remarks>
            The log can be useful for debugging, or simply to watch the LINQ magic in action.
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Item(System.String)">
            <summary>
            Gets a queryable table from the datbaase.
            </summary>
            <param name="table">name of the table</param>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Components">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CreateFolders">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.CustomActions">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Directories">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.DuplicateFiles">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Features">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FeatureComponents">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Files">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.FileHashes">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallExecuteSequences">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.InstallUISequences">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.LaunchConditions">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Medias">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Properties">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.Registries">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QDatabase.RemoveFiles">
            <summary>Queryable standard table with predefined specialized record type.</summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1">
            <summary>
            Represents one table in a LINQ-queryable Database.
            </summary>
            <typeparam name="TRecord">type that represents one record in the table</typeparam>
            <remarks>
            This class is the primary gateway to all LINQ to MSI query functionality.
            <para>The TRecord generic parameter may be the general <see cref="T:Microsoft.Deployment.WindowsInstaller.Linq.QRecord"/>
            class, or a specialized subclass of QRecord.</para>
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.InferTableName">
            <summary>
            Infers the name of the table this instance will be
            associated with.
            </summary>
            <returns>table name</returns>
            <remarks>
            The table name is retrieved from a DatabaseTableAttribute
            on the record type if it exists; otherwise the name is
            derived from the name of the record type itself.
            (An optional underscore suffix on the record type name is dropped.)
            </remarks>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase)">
            <summary>
            Creates a new QTable, inferring the table name
            from the name of the record type parameter.
            </summary>
            <param name="db">database that contains the table</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.#ctor(Microsoft.Deployment.WindowsInstaller.Linq.QDatabase,System.String)">
            <summary>
            Creates a new QTable with an explicit table name.
            </summary>
            <param name="db">database that contains the table</param>
            <param name="table">name of the table</param>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.GetEnumerator">
            <summary>
            Enumerates over all records in the table.
            </summary>
            <returns></returns>
        </member>
        <member name="M:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.NewRecord">
            <summary>
            Creates a new record that can be inserted into this table.
            </summary>
            <returns>a record with all fields initialized to null</returns>
            <remarks>
            Primary keys and required fields must be filled in with
            non-null values before the record can be inserted.
            <para>The record is tied to this table in this database;
            it cannot be inserted into another table or database.</para>
            </remarks>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.TableInfo">
            <summary>
            Gets schema information about the table.
            </summary>
        </member>
        <member name="P:Microsoft.Deployment.WindowsInstaller.Linq.QTable`1.Database">
            <summary>
            Gets the database this table is associated with.
            </summary>
        </member>
        <member name="T:Microsoft.Deployment.WindowsInstaller.Linq.Query`1">
            <summary>
            Implements the LINQ to MSI query functionality.
            </summary>
            <typeparam name="T">the result type of the current query --
            either some kind of QRecord, or some projection of record data</typeparam>
        </member>
    </members>
</doc>
